物件導向的觀念中,「封裝」就是物件內容的隱藏過程,哪些成員可直接被讀取,哪些成員由限定對象來讀取等等。
要取得被封裝(隱藏)的屬性或方法,可透過統一方法或介面實作(interface implements)來取得,以維護物件資源的完整性與存取安全
簡單來說就是將該隱藏的隱藏,該公開的公開需要透過存取控制詞來實作。
放置性質相似的class,在同一package之內的class名稱不可重覆。
大量的類別可能會發生同名的情形,所以Java 引入了套件的機制,解決命名衝突、檔案管理等問題。
在檔案的第一行:package 套件名稱;
慣用的命名方式為:
(1)小寫
(2)公司的網址反轉,即由左向右,由大到小,例:com.google
在 Java 中規定,.class 檔案存在的地方必須與套件的命名結構相對應
package com.demo01;
public class HelloTest {
public static void main(String[] args) {
//可以直接取用不用添加套件前綴
Hello hello = new Hello();
}
}
如果需要使用不同套件中的其他類別時,總是需要使用該類別的全名,是一件麻煩事
所以為了簡化程式 Java引入了下面要提到的import 關鍵字。
在 class 中註明 import,表示可讀取不同 package 的class,但指定要被載入的 class 必須是public。
宣告套件的方法:
在原始檔案的第二行寫下:
所以可以將上面引入Welcome類別改成以下
package com.demo01;
import com.demo01.sub.Welcome;
public class HelloTest {
public static void main(String[] args) {
Hello hello = new Hello();
Welcome welcome = new Welcome();
}
}
如果堅持使用其他類別的全名,也無需使用import 語句。
注意:Java預設為所有原始檔匯入java.lang套件下的所有類別,所以我們才可以在使用String、System時,不用import 來匯入
但也有一定要使用全名的情況,例如:java.sql 和 java.util 套件下都包含了Date類別
import java.util.*;
import java.sql.*;
在這種情況下,為了讓參照明確就需要使用類別的全名
java.sql.Date date = new java.sql.Date();
還有另一種靜態匯入的語法:用來匯入指定的類別的某個或全部的靜態成員變數、方法(static 在後面會有更詳細的說明)
import static java.lang.Math.*;
那我們封裝今天就了解到這邊,明天再繼續了解封裝的其他技術!